package array

import "soluty.cc/go/godash/internal"

// Intersection 创建唯一值的数组，这个数组包含所有给定数组都包含的元素（注：可以理解为给定数组的交集）
func Intersection(arrays [][]T) []T {
	if len(arrays) == 0 {
		return nil
	}
	var ret []T
	array := arrays[0]
	for _, value := range array {
		var cross = true
	label:
		for _, otherArr := range arrays {
			if idx := IndexOf(otherArr, value); idx < 0 {
				cross = false
				break label
			}
		}
		if cross {
			if !internal.Contains(ret, value) {
				ret = append(ret, value)
			}
		}
	}
	return ret
}
